#!/usr/bin/env node

//Node CLI 应用入口文件必须要有以上的文件头
//如果是Linux 或者 macOS 系统下还需要修改此文件的读写权限为 755

//console.log('cli working')

//脚手架的工作过程
//1.通过命令行交互询问用户问题，首先安装inquirer模块，inquirer：一个用户与命令行交互的工具
const inquirer = require('inquirer')
const path = require('path')
const fs = require('fs')
const ejs = require('ejs')

//prompt发起一个命令行的询问，接收一个数组参数，数组中的成员就是发起的问题
inquirer.prompt([
    {
        type: 'input',
        name: 'name',
        message: 'Project name?'
    }
])
.then(answer => { //接收答案
    //2.根据用户回答的结果生成文件,需要手动创建一个模板文件templates/index.html
    //console.log(answer)
    //确定模板目录和生成文件的目标目录

    //模板当前目录
    const tplDir = path.join(__dirname, 'templates')
    
    //输出目标目录，命令行在哪个目录执行就是文件输出目录，使用process.cwd()获取这个目录
    const distDir = process.cwd()

    //通过fs执行文件读写操作，将templates下的文件全部转换到目标目录,fs.readdir获取tplDir下的所有文件
    fs.readdir(tplDir, (err, files) => {
        if (err) throw err
        files.forEach( file => {
            //通过目标引擎渲染文件renderFile(文件的绝对路径，目标引擎的数据上下文，成功后的回调)
            ejs.renderFile(path.join(tplDir, file), answer, (err, res) => {
                if (err) throw err

                //渲染文件并写入目标目录
                fs.writeFileSync(path.join(distDir, file), res)
            })
        })
    })

})


